﻿using System;

namespace Graphene.Storing
{
    public class MarkerInSpace : MyNamed, Mirker
    {
        public MarkerInSpace(string myId, string myName, PointReal3D position, bool exists, System.Drawing.Color representingColor)
        {
            this.myId = myId;
            this.myName = myName;
            this.position = position;
            this.exists = exists;
            this.representingColor = representingColor;            
        }

        public MarkerInSpace(string myId, string myName, System.Drawing.Color representingColor) : this(myId, myId, new PointReal3D(), false, representingColor)
        {
        }

        public Object Clone()
        {
            MarkerInSpace m = new MarkerInSpace(this.myId, this.myName, this.position, this.exists, this.representingColor);
            return m;
        }

        public string MyId
        {
            get { return this.myId; }
        }

        public string MyName
        {
            get { return this.myName; }
        }
        
        public PointReal3D Position
        {
            get { return position; }
            set { position = value; }
        }
        
        public bool Exists
        {
            get { return exists; }
            set { exists = value; }
        }

        public System.Drawing.Color RepresentingColor
        {
            get { return representingColor; }
            set { representingColor = value; }
        }      
      

        private string myId;
        private string myName;

        private PointReal3D position;

        private bool exists;

        /**
         * When we want to show the position of the marker we may draw colored x signs on a canvas.
         * It is for debugging or feedback purposes only.
         */
        private System.Drawing.Color representingColor;
    }
}
